Optimisation d’un Outil de Génération de Données Fictives en Python
Un développeur a conçu un outil permettant de générer des jeux de données fictives en Python, visant à respecter des critères de volumétrie et de règles fonctionnelles similaires à ceux rencontrés en production, tout en préservant la confidentialité. Cet outil a été développé pour répondre à des besoins spécifiques et est devenu suffisamment performant pour envisager des optimisations.
Le fonctionnement de cet outil repose sur une structure d’alimentation de la base de données, définie via un fichier YAML. Chaque table est associée à des fonctions stockées dans des fichiers texte, et lors de l’initialisation de l’application, un mapping entre les champs et ces fonctions est effectué. Les données de référence, incluant valeurs et probabilités, sont conservées dans des bases SQLite, tandis que les données générées sont également enregistrées dans ces mêmes bases.
Actuellement, la génération de données atteint environ 100 Mo par heure, laissant entrevoir un potentiel d’amélioration en termes de performance. Le développeur s’interroge sur plusieurs pistes d’optimisation, notamment l’utilisation de Cython pour typifier certaines variables et améliorer la vitesse d’exécution, bien que cela puisse nécessiter des modifications importantes du code.
En outre, les approches de multiprocessing et multithreading sont envisagées pour paralléliser le traitement des données. La structure actuelle permettrait une division des tâches à la racine de l’arborescence, où chaque itération pourrait être exécutée indépendamment. Cependant, des questions subsistent quant à la gestion des bases de données partagées entre processus ou threads, et sur la nécessité de réconcilier les données à la fin du traitement.
Ces réflexions visent à maximiser l’efficacité de l’outil avant d’engager des investissements significatifs dans des modifications potentiellement lourdes.
Source : Article original.






